home *** CD-ROM | disk | FTP | other *** search
/ Almathera Ten Pack 3: CDPD 3 / Almathera Ten on Ten - Disc 3: CDPD3.iso / scope / 076-100 / scopedisk98 / automenu / readme.p < prev    next >
Encoding:
Text File  |  1995-03-19  |  24.2 KB  |  490 lines

  1.  
  2. Amigo : UtilityManager 1.2 © 1989 Dennis Janssen
  3.  
  4. Quick Startup Info:
  5.  
  6.   To start aum copy the included example files ".aum" and "directory2" to your
  7. "s:" directory or assign "s:" to the directory where you placed these files.
  8. Then change directory to the directory with "aum" in it or copy "aum" to your
  9. "c:" directory. ( Note - you must always have the DOS command "run" in your "c:"
  10. directory to use any DOS commands from aum. ) Now type "aum" at a cli or click on
  11. the "WB-AUM" icon. This will open a window with gadgets also there is a menu
  12. which can be seen by using the right mouse (menu) button.
  13.   Aum is programmable so this is only an example setup which you can and hopefully
  14. will modify to your own specific needs.  The documentation explains the details.
  15.  
  16. Aum 1.2 ReadMe.p
  17.  
  18. Contents
  19.   1.Introduction - Feature Overview
  20.      1.1.Brief Feature List
  21.   2.***How to get Aum started***
  22.   3.Using an included example - directory2
  23.   4.Idiosyncrasies of aum: don't use spaces in filenames; path
  24.   5.Purchasing Information - how to get the documentation details
  25.      5.1.Documentation Outline
  26.   6.Version History
  27.   7.Regarding Version Numbering
  28.   8.A note on the distribution of aum
  29.   Appendix - interprocess communication for software developers
  30.  
  31. 1. Introduction - Feature Overview
  32.  
  33.  
  34.   Aum is a graphical, mouse operated, programmable DOS manager, or shell.  It
  35. allows the user to easily use the elements of the Amiga's graphical interface -
  36. windows, gadgets, menus and requesters - plus key assignments, timers, alarms
  37. and macros to build an operating or programming environment where the main
  38. interaction with DOS is through the mouse while retaining all the power of the
  39. CLI.
  40.   There are also many internal commands and features such as command
  41. history, fast directories, variables, a mouse window manager and timed
  42. screen blanking.
  43.   The operating environment is built with what I call "command objects". These
  44. can be represented graphically by menus or gadgets, or non-graphically by key
  45. assignments, timers, alarms or macros.  The user determines a list of commands
  46. to be associates with each command object.  When a command object is selected or
  47. activated (eg. selecting a menu item or clicking a gadget) the command list
  48. associated with it is sent to aum's command preprocessor and interpreter.
  49.   The preprocessor basically expands variables and breaks up the command list
  50. into individual commands and sends the individual commands to the command
  51. interpreter which is in charge of executing the command. If the command is a
  52. built in command then the command will be executed internally else the command
  53. will be simply passed to DOS for execution as if it were typed at the CLI.
  54.   The command objects are built with the commands _MenuItem, _MenuSubItem,
  55. _Gadget, _StringGadget, _DisplayGadget, _Key, _Timer, _Alarm, and _Macro. These
  56. commands will be referred to as the "command object building commands". The
  57. gadget commands can only be used in a file and they will automatically create a
  58. window (see the section Gadget Positioning).  The other commands can be used in
  59. a file or as a part of other commands.
  60.   To build the initial command objects one puts the desired command object
  61. building commands in the file s:.aum.  Aum automatically reads that file when it
  62. begins. You can have aum read another file when it begins by explicitly giving
  63. it as a command line argument to the aum DOS command. Eg. aum <filename>.
  64.  
  65. 1.1.Brief Feature List
  66.     ------------------
  67.     1.Menus : multiple switchable menu strips with optional subitems
  68.     2.Gadgets
  69.         2.1.Boolean Gadgets
  70.         2.2.String Gadgets : with optional command history functions
  71.     3."File requester" gadgets that are resizeable, can display directories,
  72.         command history and the internal directory list.  They also have
  73.         programmable toggle commands for each list.
  74.     4.Fast Directories : Fast internal directory lists for practically
  75.         instantaneous redisplaying of a directory once you've gotten that
  76.         directory making for quick re-traversal of the directory tree of
  77.         multiple volumes; with updating if and only if necessary.
  78.     5.Command History : Multiple simultaneous history string gadgets are fully
  79.         supported.  The associated command history lists can be preset,
  80.         deleted from, displayed and operated on or executed from a display
  81.         gadget.
  82.     6.Multiple Windows
  83.     7.Key assignment of command lists, 8 optional qualifiers, 256 possibilities
  84.         per key
  85.     8.Timers : assignment of command lists to a count down timer
  86.     9.Alarms : assignment of command lists to specific times
  87.    10.Macros : aliases
  88.    11.Forty six built-in commands : including a simple debugger and a
  89.         conditional (_if, _else), screen blanking, auto window moving and
  90.         resizing, ipc, 46 in all.
  91.  
  92.         Alphabetical Command List:
  93.           ? (requester command), _Abort, _ActivateStringGg, _Alarm, _BytesBlocks,
  94.           _Cd, _CloseAllWindows, _CloseWindow, _Copy, _DebugOn, _Delete,
  95.           _Directory, _DiskBlocksAvail, _DisplayDirectories, _DisplayGadget,
  96.           _DisplayGlobals, _DisplayHistory, _FreeDirectory, _Gadget, _History,
  97.           _If(_Else), _Key, _Macro, _MakeDir, _MenuDelete, _MenuItem,
  98.           _MenuStripDelete, _MenuSubitem, _MenuSwitch, _MoveWindow, _MouseOff,
  99.           _NewMenuStrip, _OpenWindow, _Parent, _Quit, _ReadFile, _Rename,
  100.           _ResizeWindow, _ScreenOff, _Send, _StringGadget, _Table, _Timer, _Title,
  101.           _ToggleAll, _Update, _Variable
  102.  
  103.    12.Variables : 3 types of string variable including one to refer to a set of
  104.         selected files that has an implicit ("while") loop type control function
  105.    13.Automatic Requester commands ("?") for inserting user choice points in
  106.         command lists
  107.    14.Interprocess Communication : Aum accepts commands from other processes
  108.         through a separate program "send" (an executable included with the
  109.         released files). It also can send commands to any process that is
  110.         ready to receive its messages. Details for programmers about
  111.         receiving aum commands is given in the Appendix.
  112.    15.Input Handler : on/off switch for entire handler if you'd rather use a
  113.         different one
  114.       13.1.Programmable Mouse Accelerator : on/off and speed limit
  115.       13.2.Window Activation : "Sun Mouse" - on/off
  116.       13.3.Left mouse button - window to front if in a window and window is in
  117.              any way covered by another layer, screen to front if on screen
  118.       13.4.Left+Rignt mouse button - window to back if in a window, screen to
  119.              back if on a screen
  120.    16.Command preprocessor
  121.    17.Control Table : every reasonable variable of the system is controlled by
  122.         a control table which is in turn user controlled ; 66 variables
  123.         including colors, sizes, special characters of preprocessor, etc.
  124.    18.Error Codes for internal errors
  125.  
  126. 2. **** How to get Aum started ****
  127.  
  128.   Aum reads an initial "startup-file" which can be set as an argument, the
  129. default is "s:.aum". In this file the user should place lists of his/her most
  130. used commands assigned to command objects as exemplified in the included files
  131. and explained in the documentation. After aum is activated the user then works
  132. in this environment activating the preset commands with the mouse through the
  133. command objects. In most cases, you shouldn't have to type commands for DOS once
  134. your most used commands have been preset in a "aum file". You may want to edit
  135. an existing command for fine tuning - changing options, etc.- this can be done
  136. in a  history gadget and again the history can be preset. You can also build
  137. commands from displayed strings using string gadgets and the options of the
  138. built-in _Variable command .
  139.  
  140.    **** How to get Aum started the first time ****
  141.  
  142.   To start aum copy the included files ".aum" and "directory2" to your "s:"
  143. directory or assign "s:" to the directory where you placed these files. Then
  144. change directory to the directory with "aum" in it or copy "aum" to your "c:"
  145. directory. You must always have the DOS command "run" in your "c:" directory to
  146. use any DOS commands from aum. Now type "aum" at a cli or click on the "WB-AUM"
  147. icon. This will open a window with gadgets also there is a menu which can be
  148. seen by using the right mouse (menu) button.
  149.  
  150.    **** How to get Aum started in general ****
  151.  
  152.   So in general to start aum from a CLI you can simply type "aum" or add as an
  153. argument any filename you wish to use as an alternate initialization file - "aum
  154. <filename>".
  155.   WB-AUM, an included executable file, is necesary for Workbench startups. It is
  156. simply a slightly modified version of the regular DOS 1.3 CLI command - it
  157. doesn't read "s:cli-startup" but instead starts aum.
  158.  
  159. Note: Again, you must always have the DOS command "run" in your "c:" directory
  160. to use any DOS commands from aum.
  161.  
  162. 3.Using the included example files
  163.  
  164.   Included with this release are a number of files which are adapted to my
  165. paticular pattern of computer use.  You should modify them according to your own
  166. individual needs.  This section is a explanation so you will get an idea of some
  167. of the uses of Aum before you get the documentation. Details of the meaning of
  168. each command, it's arguments, options and special features are given in the
  169. documentation obtained by mail from me as explained in the Purchasing section.
  170. Below is a description of the function of the different gadgets in the file
  171. "directory2".  This file is read by the aum internal command "_read
  172. s:directory2" which is given in the startup file "s:.aum".
  173.  
  174.   This window contains two large "display gadgets" also called file requesters
  175. or directory gadgets, three string gadgets and a number of other regular
  176. (boolean) gadgets.  Beneath each display gadget is an associated string gadget
  177. which is used to display information related to it's respective display gadget
  178. such as the currently displayed directory, the number of total bytes/blocks of
  179. the selected files, the number of free blocks on the current drive, or other
  180. user selected values.  Below both of these string gadgets is another string
  181. gadget that is set up to work as a "history gadget".  By hitting the up arrow
  182. key you get a "previous" history, by hitting a down arrow you get a "next"
  183. history. These can be and have been preset by the directory2 file. Whatever you
  184. type there and hit return after (like a normal cli command) will be executed and
  185. added to the history.
  186.   Note that these functions are not "set in concrete", they have been set by the
  187. files read at startup and all can be modified to your own special uses as
  188. explained in the documentation.  The number of gadgets, their positions, names
  189. and corresponding functions are set by the files. Similarly with the menus and
  190. keys (up and down arrow keys).
  191.  
  192.   Below is a list of the "names" of the gadget - the character symbols that
  193. appear on the gadget - and a description of the command associated with clicking
  194. on the gadget.  This information can also be obtained by examining the files
  195. with the help of the documentation.  Some of the gadgets are not listed since
  196. they are easy to understand from the ones listed, eg. "Delete1".
  197.  
  198. P  gets the Parent directory of the current directory
  199. U  Updates the current directory (any non-internal commands that changes a
  200.      directory may require an update for accuracy)
  201. T  Toggles all the lines in the display
  202. b  displays the total Bytes/blocks of the selected files
  203. d  displays the number of blocks available on the Device associated with the current
  204.      directory; helpful if you want to know if a disk has enough room for a copy of
  205.      the selected files
  206. List displays the internal List of directories
  207. Free frees an internal directory freeing the associated memory
  208. V directory of VD0:
  209. R directory of RAD:
  210. 0 directory of DF0:
  211. 1 directory of DF1:
  212. r Directory of RAM:
  213. Apd sets a variable to "-a" (append). This variable is used to control the mode
  214.   of the _Variable command used in the gadgets "v" and "vv" so that they will
  215.   append the contents of their associated string gadgets to the contents of the
  216.   central string gadget. (See Documentation for the _Variable command modes)
  217. Ins sets a variable to "-i" . This variable is used to control the mode
  218.   of the _Variable command used in the gadgets "v" and "vv" so that they will
  219.   insert the contents of their associated string gadgets at the cursor into the
  220.   central string gadget. (See Documentation for the _Variable command modes)
  221. Rep sets a variable to "-r" (replace). This variable is used to control the mode
  222.   of the _Variable command used in the gadgets "v" and "vv" so that they will replace
  223.   the contents of the central string gadget with the contents of their associated
  224.   string gadgets. (See Documentation for the _Variable command modes)
  225. Db+ switchs to Debug mode
  226. -   switchs back from debug mode
  227. Abt Abort the current command list
  228. v copies the value of the string gadget to the string gadget below using the mode
  229.     value (set above)
  230. vv copies the value of the string gadget + the first selected file name to the
  231.     string gadget below using the mode value (set above)
  232. + adds the value in the string gadget to its history list
  233. - deletes the value of the string gadget from the history list
  234. v sets the string gadget to the next position in the history list
  235. ^ sets the string gadget to the previous position in the history list
  236. "Copy1 %" copies the selected files of the first list display gadget to the directory
  237.   that is displayed in the center string gadget
  238. "Copy1 2" copies the selected files of the first list display gadget to the directory
  239.   that is displayed in the right upper string gadget
  240. - resizes the gadget window to normal size
  241. | resizes the gadget window larger
  242. W brings the cli output window to the front
  243. . resizes the cli output window to a point at 0 0
  244. = resizes the cli output window brings it back to original size and position
  245. + resizes the cli output window adjusts to full screen size
  246. Histry>1 displays the history list of the center string gadget and sets the "toggle
  247.     command" (see documentation) to allow execution of any displayed command by
  248.     simply selecting it with the left mouse button
  249. Histry>2 displays the history list of the center string gadget and sets the "toggle
  250.     command" (see documentation) to simply copy the command to the center
  251.     string gadget; from there it can be edited and/or executed
  252. 1 executes the commands selected in first display gadget
  253. "Run(1) 2" runs the commands selected in the first display gadget using as
  254.     arguments the filenames selected in the second list display gadget
  255.  
  256. Key assignments:
  257.  
  258. F1 If an aum window is active the F1 function key is set to close the aum
  259. windows, when hit again it reopens the windows and it will continue this cycle.
  260. This key has no function when other program window are active.
  261.  
  262. UP DOWN  (arrow keys) The up and down arrow keys adjust the command history list
  263. of the central string gadget when the gadget is activated by the left mouse
  264. button.  Note: These functions are not set if the CAPS LOCK or any other
  265. qualifier is active.
  266.  
  267. The file directory1 is a smaller version of directory2.
  268.  
  269. Please note that many features of aum do not have an example in the included files.
  270.  
  271. 4.Idiosyncrasies of aum: spaces in filenames; path ; current directory;
  272. "run" in you c:directory
  273.   Currently aum will not handle spaces in filenames.  This means you must change
  274. for example a volume with the name "Workbench 1.3" to something like
  275. "Workbench1.3" or "Workbench_1.3".
  276.   Set the paths you want (using the DOS path) before you execute aum, aum will
  277. not know about new paths that are added after aum is started.
  278.   To change directory you must use the internal command "_cd". The Dos command "cd"
  279. will not be effective.
  280.   You must always have the DOS command "run" in your "c:" directory to use any
  281. DOS commands from aum.
  282.  
  283. 5.Purchasing Information
  284.   The full documentation with all the details and examples regarding the use of Amigo
  285. Utility Manager is about 30 pages long and is obtained by mail. Below is an outline.
  286.  
  287.         Contents:
  288.         1.Introduction
  289.         2.Startup Information
  290.         3.Commands
  291.           3.1.Alphabetical command list
  292.           3.2.Command names
  293.           3.3.Command name abbreviation
  294.           3.4.Special syntactic characters in the command format
  295.           3.5.Internal Commands
  296.           3.6.Commands Grouped around there related Command Objects
  297.           3.7.Command Error Codes
  298.         4.The Command Preprocessor
  299.         5.Variables
  300.         6.The Comand Interpreter
  301.         7.The Control Tables
  302.         8.Gadget Positioning
  303.         9.The Mouse Handler
  304.         10.Glossary of Special Terms
  305.         11.Idiosyncrasies of aum: spaces in filenames; path ; "run" in you c:directory
  306.         Appendix 1: General aum syntax
  307.         Appendix 2: Reference Tables:
  308.           1.Command Arguments Reference Table
  309.           2.Control Table Reference
  310.  
  311.   Pricing for version Aum1.2 :
  312.  
  313.       DOCS:    $9.95 for the documentation (please include the version number
  314.                      you have)
  315.       DISK:   $14.95 for the documentation and the latest version on a disk
  316.  
  317.       SOURCE: $24.95 for the documentation, the latest version and the source
  318.                      code in `C'.
  319.  
  320.   Updates for registered users: DOCS: $5, DISK: $10, SOURCE: $15
  321.  
  322.   Çalifornia residents add sales tax - 7%
  323.   Outside North America add $2.00 postage and please exchange your currency for
  324. U.S. dollars before you send.
  325.   If you wish to use the aum interface in your product contact me regarding licensing.
  326.  
  327. Send your order to:
  328.  
  329.          Dennis Janssen
  330.          2338 Telegraph, #237
  331.          Berkeley,CA 94704
  332.  
  333.   Questions by interested parties and/or support for registered users is
  334. available by phone at 415-549-2400.
  335.  
  336.   I am also available for contract programming or consulting.
  337.  
  338.   Your comments, criticisms, suggestions, etc. are most appreciated but to make
  339. ordering by mail as simple for you as possible just a check is all you need send
  340. if your current address is on the check. Make a note on the check of your
  341. program version number (Aum1.2) and the code from the pricing section above
  342. (DOCS or DISK) for the package you want.
  343.  
  344. 6.Version History
  345.   1.0a First released version
  346.   1.01-1.04 Some bug fixes that became apparent when aum was run in different
  347.               environments, e.g. locked hard drives
  348.   1.05-1.06 Internal improvements
  349.   1.07      Fixed so input handler so it will function properly when Workbench is
  350.               loaded - this affected the function of the example F1 key
  351.   1.08      the "-c" option with _Key doesn't work with a String Gadget because
  352.               Intuition swallows all keys - no RAWKEY IDCMP : use "-a" instead.
  353.               This affected the History in the center gadget
  354.   1.1       changed the _AdjustWindow into two commands: _MoveWindow and
  355.             _ResizeWindow, added another option to these commands
  356.   1.11      fixed the problem with some systems having a problem it startup
  357.             using the default filename (s:.aum); added "-n" option to
  358.             _MenuSwitch
  359.   1.12-1.15 fixed a bug in the _resize command; internal restructuring -
  360.             more "object oriented"
  361.   1.16      fixed a bug in the toggle command of 1.15; _ScreenOff now works
  362.             with multiple screens
  363.   1.17      fixed a problem with _closewindow; updated the example files;
  364.             Note : internal changes require use of the new example files
  365.             because the ordering in the command table was changed to
  366.             alphabetical to make it easier to explain and understand- sorry
  367.             about that
  368.   1.18      fixed a problem with _ScreenOff for stubborn screens
  369.   1.19      fixed _if ; improved the string gadget so it displays from the
  370.             beginning of a string after a "too wide" value
  371.   1.2       fixed a small bug that affected volume names. Note: no new features
  372.             have been added in this version
  373.   1.2.1     a few minor improvements; "_delete" now will delete the current
  374.             directory of an empty list display gadget
  375.   1.2.3     Fixed a bug that occured sometimes when selecting an item in a
  376.             list display gadget.
  377.  
  378. 7.Regarding Version Numbering
  379.   Updates for the program itself will be coded as a version number increase.
  380. When I add new features I will make a change in the first two digits (version
  381. 1.2 is an exception), corrections and improvements will be marked by changing
  382. the third digit. An update for the readme of a particular version will be coded
  383. as a change in the appended letter.
  384.  
  385. 8.A note on the distribution of aum.
  386.   Aum and the related files including the ReadMe but not including the
  387. purchased documentation may be freely distributed to friends and to other
  388. bulletin boards.
  389.  
  390. Appendix 1: For programmer's who want to there programs to receive aum
  391. commands.
  392.   Below in Appendix 2 is  aum's internal _Send command the final channel
  393. through which all aum's interprocess communication messages pass.  The
  394. external Send (included) works the same way. As you can kinda see from the
  395. code this command takes as an argument the name of a port on the SysBase
  396. PortList and a command string, the message - _SendMessage <port> <message>.
  397.   To receive messages from aum here's what you do.  First you need to put
  398. your program's named message port on the system PortList with an AddPort()
  399. so aum can find you. Then check your port for a IntuiMessage with class set
  400. to AUM_MESSAGE_CLASS (0x01000000), if you get one, first make a copy of the
  401. command character string pointed to by the IntuiMessage's IAddress then
  402. Reply() the message. That's it.  Now you can do whatever processing you
  403. like with the message.
  404.  
  405. Example code:
  406.  
  407. #define AUM_MESSAGE_CLASS 0x01000000
  408.   struct MsgPort CommonPort;
  409.   CommonPort.mp_Node.ln_Name="YourNameHere";
  410.   ...
  411.   AddPort(&CommonPort);
  412.  
  413.   struct IntuiMessage *imessage ;
  414.   WaitPort(&CommonPort );
  415.   imessage=GetMsg(&CommonPort);
  416.   class=imessage->Class;
  417.   switch(class) {
  418.     ...
  419.     case AUM_MESSAGE_CLASS:
  420.       command=TemporaryCopyOfString(imessage->IAddress);
  421.       break;
  422.   }
  423.   ReplyMsg(imessage);
  424.   ReadEvaluateCommandList (command);
  425.  
  426.   Before you exit first take your port off the PortList with RemPort() so
  427. no other task can find you and attempt to send you a message while your
  428. exiting. You then need to Reply() to any remaining aum messages on your
  429. port list.
  430.  
  431.     RemPort(&CommonPort);
  432.     while(imessage=GetMsg(&CommonPort))ReplyMsg(imessage);
  433.     ...
  434.     exit();
  435.  
  436. Note: because in both my internal "_SendMessage" and external "Send" command
  437. there is a Forbid() before attempting to find the port there is no problems
  438. regarding exit timing.
  439. Aum is not dependent on any other response besides a Reply() but as you can
  440. see below does Wait() for that response before getting back to other
  441. business. Note: Aum always takes responsibility for freeing the message
  442. memory.
  443.   This provides a simple, effective interprocess communication mechanism. I
  444. used the IntuiMessage because many processes use an IÐCMP in their main
  445. input loop and since Intuition already puts those ports on the system
  446. PortList with a generic name ("IDCMP") sometimes all you need do is rename
  447. a Window UserPort.
  448.   As an example, my version of Matt Dillon's DME editor has been modified
  449. to function as described above.   Since dme (version 1.29) doesn't have
  450. command history I map the escape key to sending aum a message to open a
  451. borderless window with a history string gadget that mirrors the built-in
  452. command line mode of dme.  The history gadget has its <RETURN> key command
  453. set to send its contents to dme as a command, add the contents to its
  454. history list and then close the window.  Each time I hit the escape key the
  455. window with the history list is there.
  456.  
  457. Appendix 2: C Code for developers who want to be able to receive messages from
  458. aum.
  459.  
  460. long
  461. _SendMessage(){
  462.   char *port_name,*message;
  463.   long error_number;
  464.   struct IntuiMessage *our_message;
  465.   long message_length;
  466.   struct MsgPort *receiver_port, *port ;
  467.  
  468.   port_name=PtrContext->c_Arguments[0];
  469.   message=PtrContext->c_Arguments[1];
  470.   our_message=TemporaryObject(sizeof(struct IntuiMessage)+strlen(message)+1);
  471.   our_message->IAddress=our_message+1;
  472.   our_message->mn_ReplyPort=port=&((struct Process*)CurrentTask)->pr_MsgPort;
  473.   strcpy(our_message->IAddress,message);
  474.   our_message->Class=AUM_MESSAGE_CLASS;
  475.   Forbid();/* can't have the task try to exit while we're doing a PutMsg() */
  476.   receiver_port=FindNameCaseInsensitive(&SysBase->PortList, port_name);
  477.   if(receiver_port)PutMsg(receiver_port,our_message);
  478.   Permit();
  479.   if(receiver_port){
  480.     WaitPort(port);
  481.     GetMsg(port);
  482.     return(OK);
  483.   }
  484.   else return(CANT_FIND_PORT);
  485. }
  486.  
  487. Amigo : UtilityManager 1.2 © 1989 Dennis Janssen
  488.  
  489.  
  490.